import json

import os

from lib.llm import invoke


from util.tool import merge, read_json, save_json, extract_json


script_dir = os.path.dirname(__file__)

file_path = os.path.join(script_dir, "data-input.json")


# 读取JSON
input_json = read_json("data-input.json")


# 获取对话文案
input_data = extract_json(input_json, ["title"])
input_str = json.dumps(input_data, ensure_ascii=False, indent=4)
print("输入", input_str)

sys_tmpl = """
分析用户的输入内容，判断最适合的向量数据描述文本。你是一个智能分析助手，需要完成以下任务：

1. 分析用户输入的核心内容
2. 根据用户输入的标题，编写详细的内容描述
3. 选择最合适的图表类型
4. 提供合理的选择理由


请严格按照以下规范执行：

输出格式要求
{{
    "title": "原本的title",
    "content": "详细描述",
    "type": "图表类型(从常见类型中选择最合适的)",
    "reason": "选择理由"
}}


图表类型参考（可选图表类型包括但不限于）：
- 柱状图：适合比较不同类别的数值
- 折线图：适合展示趋势变化
- 饼图：适合显示比例关系
- 散点图：适合展示变量间关系
- 雷达图：适合多维数据比较


示例参考
[
    {{
        "title": "比较2022年各季度三大产品的销量"
    }}
]


输出结果，请严格按照以下JSON格式返回结果，只需给出JSON内容，不需要其他说明：
[
    {{
        "title": "比较2022年各季度三大产品的销量",
        "content": "展示2022年四个季度中三大主力产品的销售数量对比，反映不同产品在不同季度的市场表现",
        "type": "柱状图",
        "reason": "柱状图适合比较不同季度(类别)下多个产品(系列)的销量数据"
    }}
]


必须遵守的规则
1. 必须严格使用JSON格式
2. 不要包含任何额外解释
3. 图表选择必须合理
4. 描述要准确完整
5. 保持专业客观的语气
"""


# 对话模型调用
result = invoke(
    system_template=sys_tmpl,
    user_template="{input_str}",
    input_data={"input_str": input_str},
)
result = json.loads(result)

# 合并result和data
merge(input_json, result)
print("合并结果")


# 保存结果json
save_json("摘要转JSON.json", input_json)
print("保存结果到文件 摘要转JSON.json")
